|
Concurrent Haskell extends〔Simon Peyton Jones, Andrew D. Gordon, and Sigbjorn Finne. (Concurrent Haskell ). ''ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (PoPL).'' 1996. (Some sections are out of date with respect to the current implementation.)〕 Haskell 98 with explicit concurrency. The two main concepts underpinning Concurrent Haskell are: * A primitive type MVar α implementing a bounded/single-place asynchronous channel, which is either empty or holds a value of type α .* The ability to spawn a concurrent thread via the forkIO primitive.Built atop this is a collection of useful concurrency and synchronisation abstractions〔The (Haskell Hierarchical Libraries ), (Control.Concurrent )〕 such as unbounded channels, semaphores and sample variables. Default Haskell threads have very low overheads: creation, context-switching and scheduling are all internal to the Haskell runtime. These Haskell-level threads are mapped onto a configurable number of OS-level threads, usually one per processor core. == Software Transactional Memory == The recently introduced Software Transactional Memory (STM)〔Tim Harris, Simon Marlow, Simon Peyton Jones, and Maurice Herlihy. (Composable Memory Transactions ). ''ACM Symposium on Principles and Practice of Parallel Programming 2005'' (PPoPP'05). 2005.〕 extension〔(Control.Concurrent.STM )〕 to the Glasgow Haskell Compiler reuses the process forking primitives of Concurrent Haskell. STM however: * eschews MVar s in favour of TVar s.* introduces the retry and orElse primitives, allowing alternative atomic actions to be ''composed'' together.抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Concurrent Haskell」の詳細全文を読む スポンサード リンク
|